home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 2 / CU Amiga Magazine's Super CD-ROM 02 (1996)(EMAP Images)(GB)[!][issue 1996-04].iso / magazine / amiga_e / amigae.june.archive / 000066_crash!kirk.safb.af.mil!BWILLS_Sat, 12 Jun 93 23:49:58 PST.msg < prev    next >
Text File  |  1993-08-31  |  2KB  |  72 lines

  1. Received: by bkhouse.cts.com (V1.16/Amiga)
  2.     id AA00000; Sat, 12 Jun 93 23:49:58 PST
  3. Received: from kirk.safb.af.mil by crash.cts.com with smtp
  4.     (Smail3.1.28.1 #15) id m0o4lTY-0000EnC; Sat, 12 Jun 93 23:23 PDT
  5. Message-Id: <m0o4lTY-0000EnC@crash.cts.com>
  6. Date: 12 Jun 93 20:39:00 CST
  7. From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
  8. To: "amigae" <amigae@bkhouse.cts.com>
  9. Subject: re:  ARRAYS in OBJECTS
  10.  
  11. Greetings Magnus!
  12.  
  13. >Hi everyone!
  14. >
  15. >I am having some problems with arrays in objects. The manual says that
  16. >it is possible to use something like:
  17. >
  18. >OBJECT myown
  19. >  colors[32]:ARRAY OF INT
  20. >ENDOBJECT
  21. >
  22. >But this gives me an "incorrect object definition". However, when I change
  23. >the code to:
  24. >
  25. >OBJECT myown
  26. >  colors[32]:ARRAY
  27. >ENDOBJECT
  28. >
  29. >everything works fine, but instead I have an ARRAY OF CHAR instead of an
  30.  
  31. Actually, the only example in the manual of an array is an array of char,
  32. which is the default array element type.  In order to put other types of
  33. arrays into objects you have to trick the computer into accessing the area
  34. of memory stored in your object as if it were integers .vs. longs.  It's not
  35. as hard as you may fear.  Try this:
  36.  
  37. ---  Cut Here  ------------------------------------------------------------
  38.  
  39. OBJECT myown
  40.   colors
  41. ENDOBJECT
  42.  
  43.  
  44. PROC main ()
  45.   DEF x : PTR TO INT,  /* This will be used to access the 'ARRAY OF INT'. */
  46.       my : myown,
  47.       i
  48.  
  49.   /* Alloc 64 bytes of whatever to pointer my.colors. */
  50.   /* 32 * sizeof(int) == 32 * 2 == 64                 */
  51.   my.colors := New (64)
  52.  
  53.   /* Assign address to area of mem to hold 'ARRAY OF INT'. */
  54.   x := my.colors
  55.  
  56.   /* Fill the array. */
  57.   FOR i := 0 TO 31 DO x [i] := i
  58.  
  59.   /* Read the array. */
  60.   FOR i := 0 TO 31 DO WriteF ('\d ', x [i])
  61.  
  62.   /* Cleanup. */
  63.   x := NIL
  64.   Dispose (my.colors)
  65.  
  66.   /* Eesh!  I just realized this method could be used to create types  */
  67.   /* similar in nature to C unions (except that you'd have to use a    */
  68.   /* different pointer variable depending on the way you want to look  */
  69.   /* at the area of memory.                                            */
  70.   /* There you go, Magnus.  Have fun!  (That's what it's all about |-) */
  71.   /*   -- Barry                                                        */
  72. ENDPROC